/*****************************************************************************
Copyright 2006 Kervin L. Pierre
    EMAIL: otlkcon@adevsoft.com

This file is part of Otlkcon.

Otlkcon is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

Otlkcon is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lesser GNU General Public License for more details.

You should have received a copy of the Lesser GNU General Public License
along with Otlkcon; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*******************************************************************************/

#pragma once
#include "StdAfx.h"
#include "otlkcon_generic_msgstore.h"

class O_IMSPMsgStore : public otlkcon_generic_msgstore
{
public:
    O_IMSPMsgStore();

    HRESULT Create(char * df, MAPIUID ig, otlkcon_memory *m );
    HRESULT Destroy();
    HRESULT Load(char *df, O_ENTRYID *eid, otlkcon_memory *m );

    STDMETHODIMP GetReceiveFolderTable( ULONG ulFlags,
                    LPMAPITABLE *lppTable );
    STDMETHODIMP GetReceiveFolder(  LPTSTR lpszMessageClass,
                    ULONG ulFlags,  ULONG *lpcbEntryID,
                    LPENTRYID *lppEntryID,  LPTSTR *lppszExplicitClass);
    STDMETHODIMP GetOutgoingQueue( ULONG ulFlags,
                    LPMAPITABLE *lppTable);
    HRESULT LoadForeignAppointmentFolders();

    HRESULT ProcessEvent( otlkcon_event_struct *ev );

    // Calendar sync API
    HRESULT OnSyncAppointmentComponents( otlkcon_event_struct *ev );
    HRESULT RegisterAppointmentFolder( wstring accountId, O_IFolder *folderEid );
    HRESULT DeleteAppointments( wstring accountId, map<wstring,wstring> namePairs );
    HRESULT OnAppointmentNameReq( otlkcon_event_struct *ev );

private:
    O_ITable *outgoingQueueTable;
    O_ITable *receiveFolderTable;
};

class O_IABPMsgStore : public otlkcon_generic_msgstore
{
    ;
};

class O_IXPPMsgStore : public otlkcon_generic_msgstore
{
    ;
};